<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // 扩展运算符 ...    =>  展开数组和对象


    // 扩展运算符和数组   将一个数组转为用逗号分隔的参数序列。
    // 应用:
    // 1. 将数组展开 作为函数的实际参数(逗号分隔的参数序列)
    // 2. 将数组展开 放到新数组中


    // var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // console.log(list); // [1, 4, 7, 2, 5, 8, 3, 6, 9]
    // console.log(...list); // ...list => 1, 4, 7, 2, 5, 8, 3, 6, 9
    // console.log(1, 4, 7, 2, 5, 8, 3, 6, 9); // 逗号分隔的参数序列

    // 取数组中最大值
    // var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    // var max = Math.max(...list);
    // console.log(max);


    // 数组复制(得到一个与原数组元素相同的新数组)  => (浅拷贝 只复制一层,二维数组还是引用同一片内存空间)
    // var list = [1, 4, 7, 2, 5, 8, 3, 6, 9, ["x", "y", "z"]];

    // var arr = [...list];
    // console.log(arr === list);
    // console.log(arr[9] === list[9]);


    // 数组合并
    // var a = [1, 4, 7];
    // var b = [2, 5, 8];
    // var c = [3, 6, 9];

    // // var arr = a.concat(b, c);
    // var arr = [...a, ...b, ...c];
    // console.log(arr);



    // 扩展运算符和对象  =>  将一个对象转为用逗号分隔的键值对序列。

    // 应用:
    // 1. 将对象展开 放到新对象中

    var obj = { a: 1, b: 2, c: 3, d: 4 };

    // 对象复制 => 浅拷贝
    // var data = {
    //     ...obj,  // a: 1, b: 2, c: 3, d: 4
    // }
    // console.log(data, obj);


    // 对象合并
    var a = { a: 1 };
    var b = { b: 2 };
    var c = { c: 3 };
    var d = { d: 4 };

    var data = {
        ...a,
        ...b,
        ...c,
        ...d,
    }
    console.log(data);






</script>

</html>